# 定义一个包含前置空格的字符串
my_string = "   Hello, World!"
print("原始字符串:")
print(f"'{my_string}'")

# 使用lstrip()删除前置空格
trimmed_string = my_string.lstrip()
print("\n使用lstrip()处理后:")
print(f"'{trimmed_string}'")

# 验证空格是否被删除
print(f"\n原始字符串长度: {len(my_string)}")
print(f"处理后字符串长度: {len(trimmed_string)}")
print(f"删除的空格数量: {len(my_string) - len(trimmed_string)}")

# 处理不同类型的空白字符
print("\n=== 处理不同类型的空白字符 ===")
# 包含空格、制表符、换行符的字符串
mixed_whitespace = " \t\n  Hello, World!"
print(f"混合空白字符字符串: '{mixed_whitespace}'")
print(f"混合空白字符字符串长度: {len(mixed_whitespace)}")

# 使用lstrip()删除所有前置空白字符
cleaned_string = mixed_whitespace.lstrip()
print(f"清理后字符串: '{cleaned_string}'")
print(f"清理后字符串长度: {len(cleaned_string)}")


name = "\r\r\r\tabcjackieaabbccddlinda\t\t\n         "
print(f"原字符串长度={len(name)}")

new_name = name.strip()

print(f"原字符串长度={len(new_name)}")


name1 = "abc dabcjackieaabbccddlinda  smith ddcbaabc"
print(f"原字符={name1}")

name_remove_abc = name1.lstrip("abc")
print(f"删除字符左侧abc后的新字符={name_remove_abc}")

del_right_abc_name = name1.rstrip("abc")
print(f"删除字符右侧abc后的新字符={del_right_abc_name}")

de_left_and_right_abc_name = name1.strip("cba")  # abc,bac,abc都可以
print(f"删除字符两侧abc后的新字符={de_left_and_right_abc_name}")

# 使用索引反转字符串

origin_str = "0123456789"
print(f"原始字符串={origin_str}")

reverse_origin_str = origin_str[::-1]  # 使用切片的方式实现反转
print(f"反转之后的字符串={reverse_origin_str}")

# reversed方法返回的是一个迭代器，不是列表，因为迭代器是惰性加载的，调用才用，占用内存空间少，而list是一次性加载到内存中，占用内存空间多
reverse_origin_str_1 = "".join(reversed(origin_str))


for item in reversed(origin_str):
    print(f"item={item}")

print(f"通过reversed和join实现反转={reverse_origin_str_1}")
